スレッド表示 | フラット表示〕 全トピック 920 件中 29 番目 次≫ ≪前

正規表現のページ

created: 2008-11-23 12:46 | modified: 2009-04-21 16:47 | reply: 6

[4256] 正規表現のページ

user: たける | created: 2008-11-23 12:46
読ませていただきましたが、1つ気になったので。
電話番号の項目
市外局番は、最大5桁あります。
市内局番の最小は1桁です。
# 08396,08388,08387,05769など。
最大長は10桁~11桁で変わりません。
reply: 4257 4276 返信 編集 削除

[4257] 正規表現のページを訂正

user: ゆうじ | created: 2008-11-23 16:40
管理人です。

たけるさん、ありがとうございました。
「5桁-1桁-4桁」で区切られる電話番号は知りませんでした。
該当ページ、早速訂正させて頂きました。
今後とも宜しくお願いします。

●正規表現は怖くない
http://www.sound-uz.jp/php/note/regx
Parent: 4256  返信 編集 削除

[4276] 正規表現のURL

user: 月守 | created: 2009-04-06 15:21
細かいことかもしれませんが、僕も最近URLにマッチする様な正規表現を作成したところ、<a href="">などの""はなくてもいい
(多分正しい文法ではないと思いますが、ブラウザは認識してくれます)
と分かりました。

僕はそこで
$pattern ="/<a half=\"?[^>\s\"]+\"?(?:\s?.*?>|>)/is"
という感じにしてみました。

任意のタグ$tagのプロパティ$proにヒットする物です
$pattern = "/<".$tag."[^>]+?".$pro."=\"?[^>\s\"]+\"?(?:\s?.*?>|>)/is";

何かの参考にしていただければ幸いです。
長文失礼しました。
Parent: 4256  reply: 4277 返信 編集 削除

[4277] URLを抽出して・・・

user: ゆうじ | created: 2009-04-07 19:24
こんばんわ。

このページ↓の「タグ」のところを
http://www.sound-uz.jp/php/note/regx
ダブルクォーテーションの有無に関係なく
アンカーからURLを抽出するパターンを書いて見ました。
ダブルクォーテーションが
片方だけの場合も通ってしまいますがお許しを。

$pattern = '/<a href="?([^"\s]+).*?>(.+?)<\/a>/is';

月守さんのとちょっと違うのは抽出しようとしてるところ。
このパターンで preg_match_all() にかければ
後々リンクチェッカーとかサイト内のSEO対策などに
使えるのはないかと思います。
目的が違えば正規表現も違ってくる一例です。

今後とも宜しくお願いします。

---
月守さんはお解かりだと思いますので
他の方向けに誤解の無い様補足しておきます。

属性の値を囲むダブルクォーテーションは
xmlやxhtmlでは省略できません。
ブラウザで見るかぎり問題無いよう見えるのは
あくまでもイレギュラーに対するブラウザの対処法です。

他のアプリケーション(DOM等)から利用出来なかったり
プログラムを複雑にし保守しづらくなるので
ウェブアプリを作る立場の人間としては
省略しない方向で考えるべきです。

アンカータグではありませんがこんな例もあります。
[2908]メール送信で改行以下が消える
http://www.sound-uz.jp/php/bbs/thread/2908?view=flat

もちろん、未知のウェブページのアンカーから
URLを抽出しようとするなら、ダブルクォーテーションが
無い場合を想定しておくのは必要なことです。
Parent: 4276  reply: 4278 返信 編集 削除

[4278] 月守

user: 月守 | created: 2009-04-07 22:32
わざわざご返信ありがとうございます。
僕の汚い正規表現を解析していただけて、本当にうれしく思います。

xmlについては全然知りませんでした。
やっぱりダメだったんですね、勉強になりました。

ちなみに、プロパティの値を囲むダブルクォートが入り交じったページの例は下記のサイトです。
http://www.delegate.org/delegate/
僕の使うFirefox3では普通に見えます。
Parent: 4277  reply: 4279 返信 編集 削除

[4279] HTMLタグ一般へ拡張

user: ach | created: 2009-04-20 09:12
久しぶりの投稿です
名前付きサブパターンのテストに書いてみました

$pattern = '/<(?P<tag>\w+)(?:\s+(?P<property>\w+=(?:"[^"]*"|\'[^\']*\'|[^\s"\']\S*)))*>(?P<innerhtml>.*?)<\/(?P=tag)>/is';

結構厳密な動作をします
再帰的マッチングや子ノードを持たないエレメントへの対応もさせてみたいです…
が、そういったことをするならDOMのloadHTMLを利用した方がよいですね
Parent: 4278  reply: 4283 返信 編集 削除

[4283] Re. HTMLタグ一般へ拡張

user: ゆうじ | created: 2009-04-21 16:47
achさん、こんにちは。お久しぶりです。

名前付きサブパターンは
複雑そうというイメージだけで避けてましたが
挙げて頂いたサンプルのお陰で使い方がイメージできました。
感謝♪

再帰的なパターンが求められる要件は
私も DOM の方が良いと思ってます。
属性も含めて入れ子になったHTML(XML)を扱おうとすると
PHPのデータ型ではオブジェクトが一番しっくりきますから。
Parent: 4279  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 29 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑