我試圖使用preg_replace
來匹配字符串中的所有youtube鏈接並將其替換爲其他字符。使用preg_replace返回的奇怪字符源自參考
我會匹配[youtube][/youtube]
標籤中的標準鏈接和完整鏈接。將匹配什麼
舉例:
例https://www.youtube.com/watch?v=rB2uwRIVo1I&foo=jpiadSpjpj&moo=foo&cow=123
https://www.youtube.com/watch?v=rB2uwRIVo1I&foo=jpiadSpjpj&moo=foo&cow=123
[youtube]https://www.youtube.com/watch?v=rB2uwRIVo1I&foo=jpiadSpjpj&moo=foo&cow=123[/youtube]
[youtube]https://www.youtube.com/watch?v=rB2uwRIVo1I&foo=jpiadSpjpj&moo=foo&cow=123[/youtube]
什麼不匹配:
[youtube]rB2uwRIVo1I[/youtube]
現在,preg_match
測試時,這一切工作正常;我嘗試了preg_replace
用下面的代碼:
$data = file_get_contents('data-all.txt');
$data = preg_replace('#(?:(?:\[youtube\])\s*)?(?:https?://)?(?:www\.)?(?:youtube\.com)/watch\?[^\s]*v=([a-zA-Z0-9_-]+)[^\s]*(?:\s*(?:\[/youtube\]))?#im', "[youtube]\0[/youtube]", $data);
echo $data;
現在我試圖取代內[youtube]
標籤,如這一切與他們各自的YouTube ID的比賽:
[youtube]rB2uwRIVo1I[/youtube]
這也工作正常,但是放置在[youtube]
內的文字是一個奇怪的字符,而不是視頻的YouTube管理員ID。
實施例:
我還試圖與\1
參考,得到了相同的結果。
我在這裏做錯了什麼?這是一種字符集問題嗎?
啊啊謝謝。猜猜我沒有仔細閱讀文檔。 – Brett