ถาม php programmer อีกละ...

เริ่มโดย kingmaster, 19 กุมภาพันธ์ 2007, 21:52:42

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

kingmaster

หุหุ วันนี้มีเรื่องมาถามอีกแล้วครับ ไอ่ผมมันก็มือสมัครเล่นซะด้วยนะ ไม่ได้เก่งกาจอะไร

เลยอยากถามมืออาชีพเรื่องการค้นหาและแทนที่น่ะครับเช่น


<h2 class="sl f"> bra... bra.... &raquo;</a>


ผมต้องการแทนที่อักษรทุกตัวที่อยู่ระหว่าง
<h2 class="sl f">
และ
&raquo;</a>

โดยใช้ "" แทนที่น่ะครับ จะเขียนยังไงครับ ถ้าจะใช้ฟังก์ชัน eregi_replace

ขอบคุณครับ...

:D

net1

ถ้าใช้ preg_replace แทนคงไม่มีปัญหานะครับ เพราะถนัดมากกว่า และ่ส่วนใหญ่ก็ใช้ได้ทุก server

$text = preg_replace('/<h2 class=\"sl f\">(.*)?\&raquo;<\/a>/','<h2 class="sl f">""&raquo;</a>',$text);

kingmaster

อ้างถึงจาก: net1ถ้าใช้ preg_replace แทนคงไม่มีปัญหานะครับ เพราะถนัดมากกว่า และ่ส่วนใหญ่ก็ใช้ได้ทุก server

$text = preg_replace('/<h2 class=\"sl f\">(.*)?\&raquo;<\/a>/','<h2 class="sl f">""&raquo;</a>',$text);

ครับ ได้ครับ ขอบคุณมากครับ

:D

octoberbooks

กระทู้ขุดนะครับ พอดีไปหาใน Google แล้วเจออ่ะ

สงสัยครับ คือว่าถ้าใช้

$text = preg_replace('/<h2 class=\"sl f\">(.*)?\&raquo;<\/a>/','<h2 class="sl f">""&raquo;</a>',$text);

แล้วทีนี้มันมีข้อแม้ว่าให้ตรวจสอบและแทนคำเฉพาะ คำแรก หรือ คำที่สอง หรือคำที่ สาม เท่านั้น (กำหนดคำที่ต้องการเปลี่ยนได้เอง) ไม่ทราบเขียนไงอ่ะครับ

ขอบคุณครับ
[direct=https://internet-true.com]ติดเน็ตบ้านทรู[/direct]

octoberbooks

ทำได้หรือเปล่าอ่ะครับ
[direct=https://internet-true.com]ติดเน็ตบ้านทรู[/direct]

EThaiZone

ทำได้ครับ

$text = preg_replace('/<h2 class=\"sl f\">(.*)?\&raquo;<\/a>/','<h2 class="sl f">""&raquo;</a>',$text, 3);

ต่อจำนวนเป็นพารามิเตอร์ตัวที่ 4 ได้เลยครับ

octoberbooks

[direct=https://internet-true.com]ติดเน็ตบ้านทรู[/direct]

octoberbooks

ได้ละครับ ทีนี้อยากรบกวนต่ออีกครับ
คือว่าถ้า replace แบบนี้มันจะ เรียงจากคำแรกมาเรื่อย ๆ ใช่มั้ยครับ แล้ว

ถ้าเราต้องการกำหนด โดยเลือก replace เป็นคำที่ 2 หรือ 3 ตามต้องการ จะได้มั้ย

ขอบคุณครับ
[direct=https://internet-true.com]ติดเน็ตบ้านทรู[/direct]

EThaiZone

ไม่มีครับ ฟังค์ชั่นแบบนั้น (หรือมีแต่ผมไม่รู้ แต่ไล่แล้วมันหาไ่ม่เจอ)

เลยเขียนให้ตัวหนึ่งละกัน (กำลังอู้งาน  ;D)

ตัวอย่างคือ ข้ามคำแรก แล้วแทนที่ 2 คำนะครับ

function replace_skip($find, $replace, $string, $skip=false, $limit=false) {
##This function by EThaiZone

//Skip string
$c = ($skip===false ? 1 : $skip);
for($i=0; $i < $c; $i++){
$pos = strpos($string, $find, $pos+1);
if($pos !== false) if($skip===false) $c++;
}

$len = strlen($replace);

//Replace string
$c = ($limit===false ? 1 : $limit);
for($i=0; $i < $c; $i++){
$pos = strpos($string, $find, $pos+1);
if($pos !== false) {
$string = substr_replace($string, $replace, $pos, $len);
if($limit===false) $c++;
}
}
return $string;
}

$string = "000 aaa 111 aaa 222 aaa 333 aaa 444";

echo replace_skip("aaa", "---", $string, 1, 2);


ถ้าหัดเขียนฟังค์ชั่นใช้เองไว้่ จะสะดวกมากครับ  :)

ฉันไม่มีตัวตน

คุณ Ethaizone เก่งมากเลยครับ ของที่ผมถามไปก็ใช้ได้ครับ

octoberbooks

ขอบคุณครับ ตอนนี้ผมกำลังศึกษาอยู่ครับ หุหุแต่มันยากอ่ะ เลยใช้ถามเอา หุหุ
[direct=https://internet-true.com]ติดเน็ตบ้านทรู[/direct]