php
2013-06-20 90 views 0 likes 
0

我有一個字符串,其中包含不同數量的Url。我想刪除每個Url的「?category_id = x」部分。 x將是一個不斷變化的數字。PHP刪除內容中的部分網址

var old_string = "some text <a href='/platforms/item/something?category_id=x'>some text</a> some more text <a href='/platforms/item/something?category_id=x'>some text</a>..." 

var new_string = "some text <a href='/platforms/item/something'>some text</a> some more text <a href='/platforms/item/something'>some text</a>...." 

我該怎麼做。正則表達式?

+0

退房http://php.net/manual/en/function.parse-url.php – Ygg

+3

此代碼是不是PHP。它看起來像JavaScript – Tim

回答

0

答案是最好的,如果你已經提取的網址,您的字符串。 我假設你沒有。

<?php 
$old_string = "some text <a href='/platforms/item/something?category_id=x'>some text</a> some more text <a href='/platforms/item/something?category_id=x'>some text</a>..."; 

// if you know there won't be any other url parameters: 
$new_string = preg_replace('!\?category_id=(x|\d+)!','', $old_string); 

// otherwise, remove query string from all URLs: 
$new_string = preg_replace('!(href=(?:\'|")[^\?\'"]+)\?[^\'"#]*!','\1', $old_string); 

儘管您的代碼看起來像JavaScript一樣。在JS第二正則表達式是:

old_string.replace(/(href=(?:"|')[^\?'"]+)\?[^'"#]*/g, '$1'); 
+0

完美的解決方案! – JDU

0

有parse_url函數,它允許分開一個url字符串的組件。

http://php.net/manual/en/function.parse-url.php

0
<?php 
$url = '//www.example.com/path?googleguy=googley'; 
var_dump(parse_url($url)); 
?> 

輸出: -

array(3) { 
    ["host"]=> 
    string(15) "www.example.com" 
    ["path"]=> 
    string(5) "/path" 
    ["query"]=> 
    string(17) "googleguy=googley" 
} 

來源: - 使用parse_url http://php.net/manual/en/function.parse-url.php

0
<?php 
$old_string = "some text <a href='/platforms/item/something?category_id=x'>some text</a> some more text <a href='/platforms/item/something?category_id=x'>some text</a>..."; 
preg_match('/<a href=\'(.*?)\'>/', $old_string, $match); 
$url   = parse_url($match[1]) ; 
$new_string = "some text <a href='".$url["host"].$url["path"]; 
$new_string .= "'>some text</a> some more text <a href='/platforms/item/something? category_id=x'>some text</a>..."; 
echo htmlentities($new_string); 
//output 
// some text <a href='/platforms/item/something'>some text</a> some more text <a href='/platforms/item/something?category_id=x'>some text</a>... 
?> 
相關問題