0

私はいくつかのPHPpregを実行しようとしています。しかし、何かが入っていない文字列が必要な場合は、一致させることができないようです。

例:

Hello! My name is [b]Peter Jack[/b]

Peter Jackが彼の姓で見つかった場合は一致しませんが、見つかった「[b] Peter[/b]」の場合は一致します。

私が物事を説明するのがちょっと苦手な人は誰でも、私がこれを解決するのを手伝う必要がある何か他に何かあればコメントしてください。


別の言い方をすれば、ウェブサイトへのリンクを取得した場合、それは一致し、preg_replaceの処理を実行しますが、ウェブサイトへのリンクが.png(画像)のように終わる場合は一致しませんリンクは作成されません。

example.com/image.png

.pngが含まれているため、一致しません

example.com/image

.pngが含まれていないため一致します

4

1 に答える 1

2

何を見つけたいのかはっきりしていません。だけの場合[b]Peter[/b]は、正規表現は必要ありません。

BBCodeの太字タグで囲まれた単一の「単語」を検索する場合は、

preg_match('%\[b\]\w*\[/b\]%', $subject)

BBCodeの太字のタグに含まれていないものを検索する場合はJack、を使用します。

preg_match(
    '%\[b\]     # Match [b]
    (?:         # Try to match...
     (?!Jack)   # (unless the word "Jack" occurs there)
     .          # any character
    )*?         # any number of times, as few as possible
    \[/b\]      # Match [/b]%x', 
    $subject)
于 2012-09-16T14:47:52.467 に答える