עבור לתוכן

בעיה קטנה ב PHP שאני לא מצליח לפתור...

Featured Replies

פורסם

היי,

יש לי מחרוזת גדולה (בעצם זה טקסט של מאמר עם תגים של HTML).

אני רוצה לפרק את המחרוזת למערך (array) בכל פעם שמופיע <h3> , אך כל הפונקציות של הפירוק שניסיתי לא כוללות בתוכן את ה-<h3> עצמו, שזה כמובן חלק חשוב.

בסוף התוצאה צריכה להיות מערך כזה:

item 1 - <h3>11111</h3>

item 2 - <h3>2222</h3>

item 3- <h3>333</h3>

תודה מראש על העזרה!!

פורסם

אז אם אתה יודע שבכל פירוק כזה צריך להיות <h3> אז קח את הפונקציה שכבר מצאת ותעשה בה פשוט שתשמור כל סטרינג עם <h3> בהתחלה ועם </h3> בסוף. :silly:

פורסם

אז אם אתה יודע שבכל פירוק כזה צריך להיות <h3> אז קח את הפונקציה שכבר מצאת ותעשה בה פשוט שתשמור כל סטרינג עם <h3> בהתחלה ועם </h3> בסוף. :silly:

זאת אכן אפשרות סבירה, אך היא פחות אלגנטית - לדעתי צריך כאן פיתרון שבתהליך הפירוק של המחרוזת למערך בכל פעם שהוא מאתר <h3>, הוא גם יכלול בתוכו את האוביקט.

אם למשל זה לא היה <h3> אלא משהו דינמי יותר?

פורסם

אפשר לעשות את זה בקלות דרך strpos וsubstr (וזה גם דינמי!):

<?php
function getTag($str, $tag = 'h3')
{
$openTag = '<' . $tag . '>';
$closeTag = '</' . $tag . '>';
$closeTagLen = strlen($closeTag);
$tags = array(); // The array to contain the entrys
while (($start = stripos($str, $openTag)) !== false) {
$len = stripos($str, $closeTag); /* This can be potentially unsafe ,
as stipos() can return FALSE if no closing tag is found */
$len -= $start; // We get the actual length by reducing the starting position of the tag
$len += $closeTagLen; // We add the len of the closing tag so that substr() will include it
$tags[] = substr($str, $start, $len);
}
return $tags;
}
?>

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים