簡體   English   中英

php字符串替換字符#

[英]php string replace after character #

我們使用以下代碼加載動態產品標題<?php echo $producttitle; ?> <?php echo $producttitle; ?>

輸入可以是:

HP ProBook 450 G5 15.6英寸i5-8250U - 4LT51EA #ABB - 黑色

這一行是動態的,因此#之后的代碼可以改變,也可以是#ACC。

應該成為:

HP ProBook 450 G5 15.6“i5 - 4LT51EA - 黑色

這些產品標題可以包含類似#的值。 它始終顯示為#,沒有任何空格。 我們想要刪除值#直到下一個空格。

這些產品標題也可以包含15.6英寸的值,我們要用15.6英寸替換它。所以文字英寸應該替換為標志“。

我們還想將i5-8250U的值更改為i5。 但i5也可以是i3或i7。 所以它應該取代所有東西 - 直到下一個空間。

我們如何在此代碼中包含兩個替換?

我目前有以下內容:

<?php $trans = array(' inch' => '"'); ?>
<h1><?php echo strtr($producttitle, $trans); ?></h1>

但現在我需要包含#部分,我們如何實現這一目標?

你可能會這樣使用preg_replace並創建一個包含2個正則表達式的數組和一個包含2個替換的數組。

在替換中,您可以使用$1來引用第一個捕獲組,以將其作為替換。

第一部分

\s+inch\s+(i[357])-\w+
  • \\s+inch\\s+匹配1+空白字符, inch ,然后是1 +空格字符(為了不匹配換行符,您可以使用\\h+而不是\\s來匹配1+個水平空白字符)
  • (i[357])捕獲組以匹配i,然后是3,5或7
  • -字面意思匹配
  • \\w+匹配單詞字符的1+倍

用。。。來代替

" $1

第二部分

(\w+)#\w+
  • (\\w+)捕獲與1個單詞字符匹配的組
  • #\\w+匹配#后跟1個單詞字符

用。。。來代替

$1

例如:

$string = 'HP ProBook 450 G5 15.6 inch i5-8250U - 4LT51EA#ABB - Black';
$find = array('/\s+inch\s+(i[357])-\w+/', '/(\w+)#\w+/');
$replace = array('" $1', '$1');
$result = preg_replace($find, $replace, $string);
echo $result; // HP ProBook 450 G5 15.6" i5 - 4LT51EA - Black

演示

暫無
暫無

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

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