sprintf()说我没有足够的论据,但我知道

时间:2014-05-14 20:35:24

标签: php printf

$content我有22次{text}。我希望它们中的每一个都将被更改为数组中的某些内容,因此我构建了函数replace(),但我正在发现此错误:

  

(!)警告:vsprintf():参数太少了   第12行的C:\ wamp \ www \ sitepro \ tample.php

我在数组上使用了count()并且我收到了22.当我在开头添加"",时,错误消失了,第一个{text}为空,但是当我将,""添加到数组的末尾时,我仍在修改错误。

这不是第一次使用这个功能,除了这个时候它工作正常。

function replace($text, $find, $replace){
    global $content;
    $content = vsprintf(str_replace($find, "%s", $content), $replace); // Line 12
    return $content;
}

$content = replace($content, "{text}", ["גם אתר זה נבנה באמצעות SelfSite", "על מנת לערוך את תוכן האתר, לחץ על טקסט האתר. לעריכת תמונה, יש ללחוץ עליה לחיצה כפולה. לאפשרויות ומידע נוסף לחץ על גלגל השיניים בצד שמאל למעלה באתר.&nbsp;<b>בהצלחה!</b>", "תיק עבודות","אני עם החברה", "עבודה שלי שפורסמה בישראל היום", "מוזה", "בין העבודות האהובות עליי!", "שלום אסייג", "דומה, לא?", "צוות", "ישראל ישראלי", "מנכ\"ל החברהת, מעצב אתרים, פוסטרים, כרטיסי ביקור ועוד.", "אלמוני אלמוני", "ראש צוות מפתחים. מומחה בשפות התכנות html, css, js, php ו-sql", "אני", "מייסד החברה. מאייר לחברות גדולות, בינהם ישראל היום.","עדכונים", "<b>12.05.14&nbsp;</b>נפתח האתר החדש! אנו רוצים להודות לחברת SelfSite על הכלי הנוח והתמיכה המיידית בכל נושא שיש. &nbsp;יש שגיאה באתר? צרו איתנו קשר!<br><br><strong>30.04.14&nbsp;</strong>זכייה בפרס ישראל לאומנות מישרארט, קהילת המעצבים הישראלית, <a data-cke-saved-href=\"http://www.isrart.co.il\" href=\"http://www.isrart.co.il\">www.isrart.co.il</a>!<br><br><strong>15.03.14&nbsp;</strong>ישראל ישראלי מצטרף כמנכ\"ל החברה! נאחל לו בהצלחה!<br>","מי אנחנו?", "חברת&nbsp;<strong>א</strong>נחנו-<b>א</b>ומנות&nbsp;מתמקדת בכל סוגי האומנות. החל מעיצוב אתרים ועד להלחנת שירים. כל אחד מחברי הצוות מומחה בתחומו. כל חברי הצוות יצירתיים ומספקים את העבודה הטובה ביותר שיכל להיות. צרו איתנו קשר דרך ה<a data-cke-saved-href=\"http://facebook.com/me\" href=\"http://facebook.com/me\">פייסבוק</a>, ה<a data-cke-saved-href=\"http://twitter.com/me\" href=\"http://twitter.com/me\">טוויטר</a> או באמצעות ה<a data-cke-saved-href=\"mailto:we@design.co.il\" href=\"mailto:we@design.co.il\">אימייל</a>.","עובד השבוע", "<img data-cke-saved-src=\"http://localhost/sitepro/1/img/demo/team1.png\" src=\"http://localhost/sitepro/1/img/demo/team1.png\" alt=\"Post Title\" style=\"width: 100%;\">"]);

我无法上传$content因为它是一个非常长的代码,但我确信只有22 {text}。 有什么问题?

1 个答案:

答案 0 :(得分:0)

你可以省略全局的东西。无论如何,您都将内容作为参数传递(在replace-method的范围内命名为text)。使用:

function replace($text, $find, $replace){
    $content = vsprintf(str_replace($find, "%s", $text), $replace); 
    return $content;
}

按预期工作。如果只找到一个{text},则只有一个被替换。

如果在array count内发现{text}$content次以上,则会收到您提及的错误。

因此,您尝试将n的{​​{1}}个匹配项替换为包含{text}个元素的数组。这就是为什么添加一个额外的空白元素(n-1)可以解决问题。