簡體   English   中英

我正在用PHP練習RegEx。 為什么這個簡單的regExp不起作用?

[英]I am practicing RegEx in PHP. Why doesn't this simple regExp work?

我正在用PHP練習RegEx。 我知道將它用於HTML字符串操作並不是那么好,但有時在我使用的PHP環境中DOMDocument不可用。

$a ='bsrc="lalala"';

$t = preg_replace('/(src="([^"]*)")/i', '\2', $a);

所以我試圖從字符串中獲取lalala但由於某些原因它不起作用。 我得到了blalalaa作為回報;

我試圖逃避"和寫'/(src=\\"([^\\"]*)\\")/i'但無濟於事。 我在preg_replace_callback函數中執行此操作,這可能是原因嗎?

感謝任何幫助!

您應該將正則表達式更改為

src=\"([^\"]*)\"

正則表達式可視化

Debuggex演示

最終的PHP必須是

$t = preg_replace('~src=\"([^\"]*)\"~i', '\2', $a);

如果你想獲得匹配,那么你需要使用preg_match而不是preg_replace

$a ='<src="lalala"a';
if (preg_match('/<src="([^"]*)"/i', $a, $m))
    print_r($m[1]);

這是因為您正在搜索<src並且字符串沒有這個。 你的測試字符串應該是<src="lalala"而不是bsrc..

嘗試這個:

    $a ='bsrc="lalala"a';

    if (preg_match('/src="(.*)"/i', $a, $matches))
    {
            if (isset($matches[1]))
            {
                 echo "Found value: " .$matches[1]. "\n";
            }
            else 
            {
                echo "Not found\n";
            }
    }
    else
    {
        echo "Not found\n";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM