我有一系列包含URL的大型降價字符串,大多數網址都很好,但是其中一些在更改格式時被破壞,它們有一些破折號(「 - 」)被改爲空格字符。可以preg_replace_callback()保存變量的元素?
我一直試圖使用preg_replace_callback()來修復它們在PHP中加載時的問題。
例子:在大串
[Site Name](http://www.siteurl.com/this-is-the-website broken url)
由於這些都包含在(即通常有文本的段落4-5),並可能在文本1-3 +網址,我需要遍歷他們捕獲字符串,刪除用短劃線代替它的空白並將其返回到正確的位置。
目前我已經得到了匹配的照顧:
$postBody = preg_replace_callback("^(\([A-Za-z\:\/0-9\-.\s]*\))^",'urlcallback', $postBody);
而且我試圖創建函數:
function urlcallback ($matches) {
static $id = 0;
$matches[$id] = preg_replace("^\s^", "-", $matches);
return $matches[$id];
$id++;
}
我preg_replace_callback的理解()是,它會調用該函數每次遇到匹配的字符串,並將該函數的返回放在該點上,但是當我得到錯誤時:
Notice: Array to string conversion in cleanup.php at line 139
第139行是我的早期$ postBody聲明,我假設preg_replace_callback()同時處理所有匹配,所以我不知道如何將它們傳回字符串,而只更改空白每一個?
該行是: $ matches [$ id] = preg_replace(「^ \ s ^」,「 - 」,$ matches);使用^作爲分隔符 – AdamSC
不給我錯誤「未定義偏移量爲2」 – AdamSC
ok試試:'$ matches [$ id] = preg_replace('/ \ s /',「 - 」,$ matches [0]);'' – anubhava